﻿#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>


////输⼊2个整数m和n，写⼀个函数average，求2个整数的平均值，考虑整数过⼤溢出的问题。
//int average(int m, int n)
//{
//	return m / 2 + n / 2;
//}
//
//int main()
//{
//	int m = 0;
//	int n = 0;
//	int ret = 0;
//	printf("请输入两个数：\n");
//	scanf("%d %d",&m,&n);
//	ret=average(m, n);
//	printf("平均值为：%d",ret);
//	return 0;
//}


//写⼀个函数Strlen，可以求字符串⻓度，注：字符串的结束标志是 \0 .
//输⼊⼀个字符串（字符串⻓度⼩于等于30，中间不包含空格），使⽤Strlen函数可以求字符串的⻓
//度，并返回。

//int Strlen(char arr[])
//{
//	int count = 0;//记录长度
//	int i = 0;
//	while (arr[i])
//	{
//		count++;
//		i++;
//	}
//	return count;
//}
//
//int main()
//{
//	char arr[31] = { 0 };
//	int num = 0;
//	printf("请输入一串字符串：\n");
//	gets(arr);
//	num = Strlen(arr);
//	printf("字符串长度为：%d", num);
//
//	return 0;
//}

//进阶版
//写⼀个函数Strlen，可以求字符串⻓度，除了函数的形参，函数中不能使⽤多余的变量。
//输⼊⼀个字符串（字符串⻓度⼩于等于30，中间不包含空格），使⽤Strlen函数可以求字符串的⻓
//度，并返回

//解法：递归思想

//int Strlen(const char *str)
//{
//	if (*str)
//	{
//		str++;
//		return Strlen(str)+1;
//	}
//	return 0;
//}
//
//int main()
//{
//	char arr[31] = { 0 };
//	int ret = 0;
//	printf("请输入字符串：\n");
//	gets(arr);
//	ret=Strlen(arr);
//	printf("字符串长度为：%d", ret);
//	return 0;
//}

#include<string.h>
//输⼊⼀个字符串，写⼀个函数将⼀个字符串的内容逆序过来。
void Reverse(char *str)
{
	int sz = strlen(str);
	//记录字符串开始和最后一位位置
	char* start = str;
	char* end = str + sz-1;
	//交换首位和末尾的字符 
	while (start<end)
	{
		char temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}

}

int main()
{
	char arr[5] = { 0 };
	printf("请输入字符串：\n");
	gets(arr);
	Reverse(arr);
	printf("%s", arr);

	return 0;
}